Current File : /var/www/e360ban/wp-content/plugins/wp-shortcodes-usuarios/wp-shortcodes-usuarios.php |
<?php
/**
*
* Plugin Name: Shortcodes de Usuarios
* Description: Permite crear shortcodes personalizados para mostrar información al usuario conectado. Incluye integraciones con WooCommerce, WooCommerce Memberships, WooCommerce Subscriptions, Easy Digital Downloads, BuddyPress
* Plugin URI: https://www.enriquejros.com/plugins/wordpress-shortcodes-datos-usuarios/
* Author: Enrique J. Ros
* Author URI: https://www.enriquejros.com/
* Version: 1.1.0
* License: Copyright 2020 - 2021 Enrique J. Ros (email: enrique@enriquejros.com)
* Text Domain: wp-shortcodes-usuarios
* Domain Path: /lang/
* Requires at least: 5.0
* Tested up to: 5.8
* Requires PHP: 7.0
* WC requires at least: 3.0
* WC tested up to: 5.3
*
* @author Enrique J. Ros
* @link https://www.enriquejros.com/
* @since 1.0.0
* @package WPShortcodesUsuarios
*
*/
defined ('ABSPATH') or exit;
if (!class_exists ('Plugin_WP_Shortcodes_Usuarios')) :
Class Plugin_WP_Shortcodes_Usuarios {
private static $instancia;
private function __construct () {
$this->nombre = __('Shortcodes de Usuarios', 'wp-shortcodes-usuarios');
$this->campos = 'Campos_WP_Shortcodes_Usuarios';
$this->domain = 'wp-shortcodes-usuarios';
$this->json = $this->domain;
$this->archivos = ['campos', 'cpt', 'clase'];
$this->clases = ['CPT_WP_Shortcodes_Usuarios', 'Clase_WP_Shortcodes_Usuarios'];
$this->dirname = plugin_dir_path (__FILE__);
$this->basename = plugin_basename ( __FILE__ );
$this->carga_archivos();
$this->carga_traducciones();
$this->actualizaciones();
$this->gestor = 'edit.php?post_type=' . CPT_WP_Shortcodes_Usuarios::CPT;
register_activation_hook (__FILE__, function () {
set_transient ('wp-shortcodes-usuarios-activado', true, 5);
}, 10);
add_action ('init', [$this, 'arranca_plugin'], 10);
add_action ('admin_init', [$this, 'comprueba_acf'], 10);
add_action ('admin_notices' , [$this, 'aviso_ayuda'], 10);
add_filter ('plugin_action_links', [$this, 'enlaces_accion'], 10, 2);
add_filter ('plugin_row_meta', [$this, 'enlaces_meta'], 10, 2);
}
public function __clone () {
_doing_it_wrong (__FUNCTION__, sprintf (__('No puedes clonar instancias de %s.', 'wp-shortcodes-usuarios'), get_class ($this)), '1.0.0');
}
private function carga_archivos () {
foreach ($this->archivos as $archivo)
require (sprintf ('%ssrc/%s.php', $this->dirname, $archivo));
if (!class_exists ('acf')) {
/**
* Para deshabilitar la constante ACF_LITE definida por el plugin:
*
* add_filter ('ejr_acf_lite', '__return_false');
*
*/
if (!defined ('ACF_LITE') && 'no' !== get_option ('acf_lite'))
add_action ('after_setup_theme', function () {
define ('ACF_LITE', apply_filters ('ejr_acf_lite', true));
}, 10);
require ($this->dirname . '/includes/acf-pro/acf.php');
}
require ($this->dirname . 'src/campos.php');
array_push ($this->clases, $this->campos);
}
public function arranca_plugin () {
foreach ($this->clases as $clase)
new $clase;
}
public function comprueba_acf () {
if (is_plugin_active ('advanced-custom-fields/acf.php')) {
deactivate_plugins ('advanced-custom-fields/acf.php');
update_option ('acf_lite', 'no');
defined ('ACF_LITE') or define ('ACF_LITE', false);
add_action ('admin_notices', function () {
?>
<div class="notice notice-error is-dismissible">
<p><?php printf (__('%s ya incluye Advanced Custom Fields PRO, por lo que no necesitas tener activada la versión gratuita de ACF. Mientras uses %s podrás utilizar las características PRO de ACF.', 'wp-shortcodes-usuarios'), '<i>' . $this->nombre . '</i>', '<i>' . $this->nombre . '</i>'); ?></p>
</div>
<?php
}, 10);
}
}
public function aviso_ayuda () {
if (get_transient ('wp-shortcodes-usuarios-activado')) {
?>
<div class="updated notice is-dismissible">
<p><?php printf (__('Gracias por usar %s. Puedes comenzar creando algunos shortcodes.', 'wp-shortcodes-usuarios'), '<i>' . $this->nombre . '</i>'); ?></p>
<p><?php printf ('<a href="%s" class="button button-primary">%s</a>', $this->gestor, __('Crear shortcodes')); ?></p>
</div>
<?php
}
}
public function carga_traducciones () {
$locale = function_exists ('determine_locale') ? determine_locale() : (is_admin() && function_exists ('get_user_locale') ? get_user_locale() : get_locale());
$locale = apply_filters ('plugin_locale', $locale, $this->domain);
unload_textdomain ($this->domain);
load_textdomain ($this->domain, $this->dirname . '/lang/' . $this->domain . '-' . $locale . '.mo');
load_plugin_textdomain ($this->domain, false, $this->dirname . '/lang');
}
public function enlaces_accion ($links, $plugin) {
if ($plugin == $this->basename) {
$enlaces['ajustes'] = sprintf ('<a href="%s">%s</a>', $this->gestor, __('Shortcodes', 'wp-shortcodes-usuarios'));
$enlaces['soporte'] = sprintf ('<a target="_blank" href="https://www.enriquejros.com/soporte/">%s</a>', __('Soporte', 'wp-shortcodes-usuarios'));
$links = array_merge ($enlaces, $links);
}
return $links;
}
public function enlaces_meta ($links, $plugin) {
if ($plugin == $this->basename)
$links['doc'] = sprintf ('<a target="_blank" href="https://www.enriquejros.com/shortcodes-personalizados-datos-usuarios-wordpress/">%s</a>', __('Documentación', 'wp-shortcodes-usuarios'));
return $links;
}
public function actualizaciones () {
include_once ($this->dirname . '/includes/updates/plugin-update-checker.php');
$myUpdateChecker = Puc_v4_Factory::buildUpdateChecker('https://www.enriquejros.com/wp-content/descargas/updates/' . $this->json . '.json', __FILE__, $this->json);
}
public static function instancia () {
if (null === self::$instancia)
self::$instancia = new self();
return self::$instancia;
}
}
endif;
Plugin_WP_Shortcodes_Usuarios::instancia();